﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PACKETPARSERMAX20.CORE
{

    public enum BattleGroundSounds : uint
    {
        SOUND_HORDE_WINS = 8454,
        SOUND_ALLIANCE_WINS = 8455,
        SOUND_BG_START = 3439
    };

    public enum BattleGroundQuests : uint
    {
        SPELL_WS_QUEST_REWARD = 43483,
        SPELL_AB_QUEST_REWARD = 43484,
        SPELL_AV_QUEST_REWARD = 43475,
        SPELL_AV_QUEST_KILLED_BOSS = 23658,
        SPELL_EY_QUEST_REWARD = 43477,
        SPELL_AB_QUEST_REWARD_4_BASES = 24061,
        SPELL_AB_QUEST_REWARD_5_BASES = 24064
    };

    public enum BattleGroundMarks : uint
    {
        SPELL_WS_MARK_LOSER = 24950,
        SPELL_WS_MARK_WINNER = 24951,
        SPELL_AB_MARK_LOSER = 24952,
        SPELL_AB_MARK_WINNER = 24953,
        SPELL_AV_MARK_LOSER = 24954,
        SPELL_AV_MARK_WINNER = 24955,
        ITEM_EY_MARK_OF_HONOR = 29024
    };

    public enum BattleGroundMarksCount : uint
    {
        ITEM_WINNER_COUNT = 3,
        ITEM_LOSER_COUNT = 1
    };

    public enum BattleGroundSpells : uint
    {
        SPELL_WAITING_FOR_RESURRECT = 2584,                 // Waiting to Resurrect
        SPELL_SPIRIT_HEAL_CHANNEL = 22011,                // Spirit Heal Channel
        SPELL_SPIRIT_HEAL = 22012,                // Spirit Heal
        SPELL_RESURRECTION_VISUAL = 24171,                // Resurrection Impact Visual
        SPELL_ARENA_PREPARATION = 32727,                // use this one, 32728 not correct
        SPELL_ALLIANCE_GOLD_FLAG = 32724,
        SPELL_ALLIANCE_GREEN_FLAG = 32725,
        SPELL_HORDE_GOLD_FLAG = 35774,
        SPELL_HORDE_GREEN_FLAG = 35775,
        SPELL_PREPARATION = 44521,                // Preparation
        SPELL_SPIRIT_HEAL_MANA = 44535,                // Spirit Heal
        SPELL_RECENTLY_DROPPED_FLAG = 42792,                // Recently Dropped Flag
        SPELL_AURA_PLAYER_INACTIVE = 43681                 // Inactive
    };

    public enum BattleGroundTimeIntervals : uint
    {
        RESURRECTION_INTERVAL = 30000,                // ms
        REMIND_INTERVAL = 30000,                // ms
        INVITE_ACCEPT_WAIT_TIME = 120000,               // ms
        TIME_TO_AUTOREMOVE = 120000,               // ms
        MAX_OFFLINE_TIME = 300000,               // ms
        START_DELAY0 = 120000,               // ms
        START_DELAY1 = 60000,                // ms
        START_DELAY2 = 30000,                // ms
        START_DELAY3 = 15000,                // ms used only in arena
        RESPAWN_ONE_DAY = 86400,                // secs
        RESPAWN_IMMEDIATELY = 0,                    // secs
        BUFF_RESPAWN_TIME = 180,                  // secs
        BG_HONOR_SCORE_TICKS = 330                   // points
    };

    public enum BattleGroundBuffObjects : uint
    {
        BG_OBJECTID_SPEEDBUFF_ENTRY = 179871,
        BG_OBJECTID_REGENBUFF_ENTRY = 179904,
        BG_OBJECTID_BERSERKERBUFF_ENTRY = 179905
    };

    public enum BattleGroundStatus : uint
    {
        STATUS_NONE = 0,
        STATUS_WAIT_QUEUE = 1,
        STATUS_WAIT_JOIN = 2,
        STATUS_IN_PROGRESS = 3,
        STATUS_WAIT_LEAVE = 4                                 // custom
    };

    public enum BattleGroundTypeId : uint
    {
        BATTLEGROUND_AV = 1,
        BATTLEGROUND_WS = 2,
        BATTLEGROUND_AB = 3,
        BATTLEGROUND_NA = 4,
        BATTLEGROUND_BE = 5,
        BATTLEGROUND_AA = 6,
        BATTLEGROUND_EY = 7,
        BATTLEGROUND_RL = 8
    };

    public enum ScoreType : uint
    {
        SCORE_KILLING_BLOWS = 1,
        SCORE_DEATHS = 2,
        SCORE_HONORABLE_KILLS = 3,
        SCORE_BONUS_HONOR = 4,
        //EY, but in MSG_PVP_LOG_DATA opcode!
        SCORE_DAMAGE_DONE = 5,
        SCORE_HEALING_DONE = 6,
        //WS
        SCORE_FLAG_CAPTURES = 7,
        SCORE_FLAG_RETURNS = 8,
        //AB
        SCORE_BASES_ASSAULTED = 9,
        SCORE_BASES_DEFENDED = 10,
        //AV
        SCORE_GRAVEYARDS_ASSAULTED = 11,
        SCORE_GRAVEYARDS_DEFENDED = 12,
        SCORE_TOWERS_ASSAULTED = 13,
        SCORE_TOWERS_DEFENDED = 14,
        SCORE_MINES_CAPTURED = 15,
        SCORE_LEADERS_KILLED = 16,
        SCORE_SECONDARY_OBJECTIVES = 17
        // TODO : implement them
    };

    public enum ArenaType : uint
    {
        ARENA_TYPE_2v2 = 2,
        ARENA_TYPE_3v3 = 3,
        ARENA_TYPE_5v5 = 5
    };

    public enum BattleGroundType : uint
    {
        TYPE_BATTLEGROUND = 3,
        TYPE_ARENA = 4
    };

    public enum BattleGroundWinner : uint
    {
        WINNER_HORDE = 0,
        WINNER_ALLIANCE = 1,
        WINNER_NONE = 2
    };

    public enum BattleGroundTeamId : uint
    {
        BG_TEAM_ALLIANCE = 0,
        BG_TEAM_HORDE = 1
    };

}
